import axios from 'axios'
import store from '@/store'
import router from '@/router'
const service = axios.create({
  baseURL: '/api',
  // baseURL: '/prod-api',  后端看到数据  技术的T 上限 公司里面 后端高  CTO  管理岗 M
  // baseURL: '/api',
  // baseURL: '/yufa-api',
  timeout: 5000
})

// 添加请求拦截器
service.interceptors.request.use(function(config) {
  console.log(store.state.user.token)
  // 如果不知道config怎么添加请求偷 去百度 axios拦截器 添加token
  // Authorzation
  config.headers['Authorization'] = `Bearer ${store.state.user.token}`
  // console.log(111)
  return config
}, function(error) {
  return Promise.reject(error)
})

// 添加响应拦截器
service.interceptors.response.use(function(response) {
  // http 状态码 200
  // return response
  // 在把服务的数据 返回给前端 业务代码的时候 先把数据过滤一遍，我们只需要response对象里面的额data属性
  // return response.data
  // if (response.data.success) {
  // return response.data
  // } else {
  // 向后端的请求是成功的（HTTP状态码是200），但是业务代码是错误，比如账号密码输入错误
  // console.log('请求失败：', response.data.message)
  // return Promise.reject(new Error(response.data.message))
  // return null  就是请求失败的时候给前端传递的值
  // return response  什么都不该，直接返回response 也行
  // }
  return response.data
}, function(error) {
  // http的状态码是 4xx 5xx
  // Promise.resolve()  Promise.reject()
  // console.log('请求401进来没有，请求出错了')
  console.dir(error)
  if (error.response.data.code === 10002) {
    // 在这个if条件里面 我们的token失效了
    // 做出的操作 和退出一模一样
    store.dispatch('user/logout')
    router.push('/login')// 修改vuexx里面的token值 然后切换其他路由看效果
  }
  return Promise.reject(error)
})

// 工作里面的 拦截器不是手动写出来 ，都是官网复制
export default service
